package org.summer.lawyer.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import org.summer.common.mybatis.core.page.PageQuery;
import org.summer.common.mybatis.core.page.TableDataInfo;
import org.summer.lawyer.domain.Category;
import org.summer.lawyer.domain.vo.category.CategoryCreateVo;
import org.summer.lawyer.domain.vo.category.CategoryUpdateVo;
import org.summer.lawyer.domain.vo.category.CategoryVo;

import java.util.Collection;
import java.util.List;

/**
 * 
 * 
 * 
 */
public interface ICategoryService extends IService<Category>{


    TableDataInfo<CategoryVo> selectPage(CategoryVo vo, PageQuery pageQuery);

    /**
     * 查询符合条件的商品分类列表
     *
     * @param vo 查询条件
     * @return 商品分类列表
     */
    List<CategoryVo> selectCategoryVoList(CategoryVo vo);

    List<CategoryVo> selectAllCategoryVoList(CategoryVo vo);

    List<CategoryVo> selectCategoryVoListByParentId(Long parentId);

    List<CategoryVo> selectCategoryVoListChildByParentId(Long parentId);

    List<Long> selectIdsByParentId(Long parentId);

    void saveCategory(CategoryCreateVo vo);

    void updateCategory(CategoryUpdateVo vo);

    void deleteCategoryByIds(Collection<Long> ids);

    CategoryVo selectCategoryVoById(Long id);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param categories 分类列表
     * @return 下拉树结构列表
     */
    List<Tree<Long>> buildCategoryTreeSelect(List<CategoryVo> categories);

    /**
     * 查询全部分类下拉树
     */
    List<Tree<Long>> selectCategoryTreeList(CategoryVo vo);
}
